package com.toycloud.business.domain.bo;

import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.toycloud.common.core.validate.AddGroup;
import com.toycloud.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.time.LocalDateTime;
import java.util.Date;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.toycloud.common.core.domain.BaseEntity;
import org.joda.time.DateTime;

/**
 * demand业务对象 demand_record
 *
 * @author binlu6
 * @date 2024-10-31
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class DemandRecordBo extends BaseEntity {

    private static final long serialVersionUID=1L;

    /**
     * 开发状态（0未完成，1已完成）
     */
    private String developStatus;

    private List<String> developStatusArr;

    private List<String> enterStatusArr;

    private List<String> filterStatusArr;

    private List<String> surveyStatusArr;

    private List<String> analysisStatusArr;

    private List<String> reviewStatusArr;

    private List<String> designStatusArr;

    private List<String> releaseStatusArr;

    private List<String> nowStatusArr;

    /**
     * 开发更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime developUpdateTime;

    /**
     * id
     */
//    @NotNull(message = "id不能为空", groups = { EditGroup.class })
    private Integer id;

    /**
     * 需求id
     */
//    @NotNull(message = "需求id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer demandId;

    /**
     * 需求版本
     */
//    @NotBlank(message = "需求版本不能为空", groups = { AddGroup.class, EditGroup.class })
    private String demandVersion;

    /**
     * 需求标题
     */
    private String demandTitle;

    /**
     * 需求描述
     */
    private String demandContent;

    /**
     * 录入附件
     */
    private List<String> enterFile;

    /**
     * 需求来源
     */
    private List<String> demandResource;

    /**
     * 需求类型
     */
    private List<String> demandType;

    /**
     * 需求端
     */
    private List<String> analysisSide;

    /**
     * 涉及部门
     */
    private List<String> analysisDep;

    /**
     * 需求人
     */
    private String demandPerson;

    /**
     * 提出时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date proposeTime;

    /**
     * 应用标签
     */
    private List<String> applicationLabel;

    /**
     * 品类标签
     */
    private List<String> categoryLabel;

    /**
     * 型号标签
     */
    private List<String> modelLabel;

    /**
     * 录入状态（0未完成，2已完成）
     */
    private String enterStatus;

    /**
     * 需求优先级（0S，1A，2B，3C，4D）
     */
    private String filterLevel;

    /**
     * 需求状态状态（0未筛选，1正常推进，2已挂起，3已关闭，4已变更）
     */
    private String filterStatus;

    /**
     * 筛选更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime filterUpdateTime;

    /**
     * 调研参与人
     */
    private String surveyPerson;

    /**
     * 场景标签
     */
    private String sceneLabel;

    /**
     * 场景说明
     */
    private String sceneDescribe;

    /**
     * 需求价值
     */
    private String demandValue;

    /**
     * 用户范围
     */
    private String userScope;

    /**
     * 现有解决方案
     */
    private String existingSolution;

    /**
     * 期望解决方案
     */
    private String expectedSolution;

    /**
     * 调研附件
     */
    private List<String> surveyFile;

    /**
     * 调研其他
     */
    private String surveyRemark;

    /**
     * 调研状态（0未完成，1已完成）
     */
    private String surveyStatus;

    /**
     * 调研更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime surveyUpdateTime;

    /**
     * 分析参与人
     */
    private String analysisPerson;

    /**
     * 分析投产比
     */
    private String analysisRoi;

    /**
     * 需求依赖选项
     */
    private List<String> analysisSelect;

    /**
     * 需求依赖
     */
    private List<JSONObject> analysisRely;

    /**
     * 分析更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime analysisUpdateTime;

    /**
     * 分析状态（0未完成，1已完成）
     */
    private String analysisStatus;

    /**
     * 评审参与人
     */
    private String reviewPerson;

    /**
     * 评审总结
     */
    private String reviewSum;

    /**
     * 评审状态（0未完成，1已完成）
     */
    private String reviewStatus;

    /**
     * 评审更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime reviewUpdateTime;

    /**
     * 设计参与人
     */
    private String designPerson;

    /**
     * 产品交付
     */
    private String productDeliver;

    /**
     * 设计产品附件
     */
    private List<String> productFile;

    /**
     * 交互设计交付
     */
    private String designDeliver;

    /**
     * 交互设计附件
     */
    private List<String> designFile;

    /**
     * ui交付
     */
    private String uiDeliver;

    /**
     * ui附件
     */
    private List<String> uiFile;

    /**
     * 资源交付
     */
    private String resourceDeliver;

    /**
     * 资源附件
     */
    private List<String> resourceFile;

    /**
     * 设计其他
     */
    private String designRemark;

    /**
     * 开发参与人
     */
    private String developPerson;

    /**
     * 开发总结
     */
    private String developSum;

    /**
     * 设计状态（0未完成，1已完成）
     */
    private String designStatus;

    /**
     * 评审更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime designUpdateTime;

    /**
     * 发布参与人
     */
    private String releasePerson;

    /**
     * 发布总结
     */
    private String releaseSum;

    /**
     * 发布状态（0未完成，1已完成）
     */
    private String releaseStatus;

    /**
     * 发布更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime releaseUpdateTime;

    /**
     * 上市数据说明
     */
    private String saleSum;

    /**
     * 产品标签
     */
    private List<List<String>> productLabel;

    /**
     * 上市更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime saleUpdateTime;

    /**
     * 当前状态
     */
    private String nowStatus;

    /**
     * 版本管理应用标签
     */
    private List<String> appApply;

    /**
     * 版本管理应用版本
     */
    private List<String> appVersion;

    /**
     * 版本管理应用品类
     */
    private List<String> versionCategory;

    /**
     * 版本管理应用产品
     */
    private List<String> versionModel;

    /**
     * 版本管理应用产品版本
     */
    private List<String> versionModelVersion;

    /**
     * 品类-型号-版本搜索级联
     */
    private List<List<String>> searchCriteria;

    /**
     * 品类-型号-版本
     */
    private List<List<String>> categoryModelVersion ;
    /**
     * 应用-版本
     */
    private List<List<String>> applyVersion;
}
